%%======================================================================
%% Provides Latex support and definitions for the Plaid language.
%% $Id $
%%======================================================================
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{PlaidDefinitions}[2010/02/05 PlaidDefinitions Package]


%%======================================================================
%% declare package we depend on 
%%======================================================================
\RequirePackage{ifthen}
\RequirePackage[ligature,shorthand]{semantic}


%%======================================================================
%% define variables and package options
%%======================================================================
\newboolean{PlaidRelease}
\setboolean{PlaidRelease}{false}

\DeclareOption{release}{\setboolean{PlaidRelease}{true}}
\DeclareOption*{\PackageWarning{PlaidDefinitions}{Unknown option ~@~X\CurrentOption~@~Y}} % catch unknown options
\ProcessOptions\relax


%%======================================================================
%% formating macros
%%======================================================================
\newcommand{\code}[1]{\texttt{#1}}
\newcommand{\cmdline}[1]{\texttt{#1}}
\newcommand{\keyw}[1]{\code{\textbf{#1}}}
\newcommand{\nterm}[1]{\textit{#1}}
\newcommand{\ntermopt}[1]{$\textit{#1}_\textit{opt}$}
\newcommand{\ntermdef}[1]{\textit{#1:}}
\newcommand{\seq}[1]{\textit{\{}#1\textit{\}}}
\newcommand{\opt}[1]{\textit{[}#1\textit{]}}
\newcommand{\alt}{$\mid$~}
\newcommand{\oneof}{\textit{one of}}
\newcommand{\defspace}{\hspace{1cm}}
\newcommand{\minisec}[1]{\noindent\textbf{#1}}

%%======================================================================
%% frequently used language keywords 
%%======================================================================
\newcommand{\with}{\keyw{with}}
\newcommand{\extend}{\keyw{extend}}
\newcommand{\new}{\keyw{new}}
\newcommand{\match}{\keyw{match}}
\newcommand{\fn}{\keyw{fn}}


%%======================================================================
%% ASCII symbols from the semantic package
%%======================================================================
\mathlig{=>}{\Rightarrow}
\mathlig{<-}{\leftarrow}
\mathlig{==>}{\Longrightarrow}
\mathlig{|-}{\vdash}


%%======================================================================
%% configure command depending on release flag 
%%======================================================================
\ifthenelse{ \boolean{PlaidRelease} }{
  \newcommand{\TODO}[1]{}
  \newcommand{\openi}[1]{}
  \newcommand{\pII}[1]{}
  \newcommand{\pI}[1]{#1}
}{
  \newcommand{\TODO}[1]{\textbf{[TODO: #1]}}
  \newcommand{\openi}[1]{\textbf{[Open Issue: #1]}}
  \newcommand{\pII}[1]{#1}
  \newcommand{\pI}[1]{#1}
}
